Skip to content

Upgrade solidjs beta 17#7813

Open
brenelz wants to merge 8 commits into
solid-router-v2-prefrom
upgrade-solidjs-beta-16
Open

Upgrade solidjs beta 17#7813
brenelz wants to merge 8 commits into
solid-router-v2-prefrom
upgrade-solidjs-beta-16

Conversation

@brenelz

@brenelz brenelz commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

No description provided.

brenelz and others added 3 commits July 8, 2026 17:01
Bumps solid-js, @solidjs/web, and babel-preset-solid from 2.0.0-beta.15
to 2.0.0-beta.16 across packages, examples, e2e apps, benchmarks, and
the pnpm overrides in pnpm-workspace.yaml.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Bumps solid-js, @solidjs/web, and babel-preset-solid from 2.0.0-beta.16
to 2.0.0-beta.17 across packages, examples, e2e apps, and benchmarks.

The scoped babel-preset-solid overrides in pnpm-workspace.yaml are
removed instead of bumped: vite-plugin-solid@3.0.0-next.5 and
@rsbuild/plugin-solid@2.0.0-beta.0 both declare
'>=2.0.0-beta.0 <2.0.0-experimental.0', which resolves to the newest
v2 beta on its own, while Solid 1.x consumers keep babel-preset-solid
1.x. A stale override here silently kept the beta.16 compiler (with
its broken omitLastClosingTag marker handling) in the build pipeline.

The @dom-expressions/* scope is added to minimumReleaseAgeExclude,
covering the renamed compiler package (@dom-expressions/babel-plugin-jsx,
formerly babel-plugin-jsx-dom-expressions).

Two unrelated loose specs are pinned to their locked versions because
re-resolving the lockfile pulled broken releases: @platformatic/flame
1.7.0 fails pnpm's trust-downgrade policy, and the nitro-nightly
'latest' tag depends on an unpublished h3 version.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
On the client, returning the loadPromise from MatchInner's pending
branch keeps a live async source in the tree whenever a match is
pending. Since Solid 2.0.0-beta.16, that routes every signal write
into a transition hold for the rest of the flush, which breaks
router-core's synchronous write-then-load flows: invalidate() on a
notFound match never re-ran the loader, and writes to unrelated
signals were held too.

SSR keeps the suspension so the streaming engine waits for the match
to settle; the client now renders just the pending component.

Verified on beta.17: without this, "re-runs loaders that throw
notFound() when invalidated via HMR filter" and "keeps rendering a
route notFoundComponent when loader returns notFound() after
invalidate" fail.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9b8a2fd2-9792-4d6e-8c0c-557096fabbc0

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch upgrade-solidjs-beta-16

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nx-cloud

nx-cloud Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

View your CI Pipeline Execution ↗ for commit 82d0f66

Command Status Duration Result
nx affected --targets=test:eslint,test:unit,tes... ❌ Failed 13m 40s View ↗
nx run-many --target=build --exclude=examples/*... ❌ Failed 42s View ↗

☁️ Nx Cloud last updated this comment at 2026-07-14 02:43:14 UTC

@github-actions

github-actions Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

🚀 Changeset Version Preview

6 package(s) bumped directly, 0 bumped as dependents.

🟩 Patch bumps

Package Version Reason
@tanstack/solid-router 2.0.0-beta.23 → 2.0.0-beta.24 Changeset
@tanstack/solid-router-devtools 2.0.0-beta.18 → 2.0.0-beta.19 Changeset
@tanstack/solid-router-ssr-query 2.0.0-beta.24 → 2.0.0-beta.25 Changeset
@tanstack/solid-start 2.0.0-beta.24 → 2.0.0-beta.25 Changeset
@tanstack/solid-start-client 2.0.0-beta.23 → 2.0.0-beta.24 Changeset
@tanstack/solid-start-server 2.0.0-beta.23 → 2.0.0-beta.24 Changeset

@socket-security

socket-security Bot commented Jul 14, 2026

Copy link
Copy Markdown

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

@brenelz brenelz changed the title Upgrade solidjs beta 16 Upgrade solidjs beta 17 Jul 14, 2026
@codspeed-hq

codspeed-hq Bot commented Jul 14, 2026

Copy link
Copy Markdown

Merging this PR will improve performance by 56.22%

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

⚡ 6 improved benchmarks
🆕 173 new benchmarks

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation ssr request loop (react) 330.5 ms 77.9 ms ×4.2
Simulation client-side navigation loop (solid) 72.6 ms 43.6 ms +66.49%
Simulation ssr request loop (vue) 420.3 ms 284.1 ms +47.92%
Simulation ssr request loop (solid) 174.6 ms 151.4 ms +15.36%
Simulation client-side navigation loop (react) 56.3 ms 50.3 ms +11.83%
Simulation client-side navigation loop (vue) 83 ms 77 ms +7.81%
🆕 Simulation ssr not-found (vue) N/A 169.7 ms N/A
🆕 Simulation ssr redirect (vue) N/A 68.2 ms N/A
🆕 Simulation ssr head (vue) N/A 326.8 ms N/A
🆕 Simulation ssr loaders (vue) N/A 136.8 ms N/A
🆕 Simulation ssr selective (vue) N/A 139.7 ms N/A
🆕 Simulation ssr server-fn GET (vue) N/A 74.4 ms N/A
🆕 Simulation ssr server-fn POST (vue) N/A 71.4 ms N/A
🆕 Simulation ssr server-route middleware (vue) N/A 63.3 ms N/A
🆕 Simulation ssr server-route (vue) N/A 60.8 ms N/A
🆕 Simulation ssr streaming deferred (vue) N/A 105.1 ms N/A
🆕 Simulation ssr assets inline-css cdn (vue) N/A 188.5 ms N/A
🆕 Simulation ssr assets linked-css control (vue) N/A 215.9 ms N/A
🆕 Simulation ssr before-load chain (vue) N/A 184.9 ms N/A
🆕 Simulation ssr control-flow error 500 (vue) N/A 198 ms N/A
... ... ... ... ... ...

ℹ️ Only the first 20 benchmarks are displayed. Go to the app to view all benchmarks.

Tip

Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.


Comparing upgrade-solidjs-beta-16 (82d0f66) with solid-router-v2-pre (67a9040)1

Open in CodSpeed

Footnotes

  1. No successful run was found on solid-router-v2-pre (2bb318b) during the generation of this report, so 67a9040 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

nx-cloud[bot]

This comment was marked as outdated.

brenelz and others added 2 commits July 13, 2026 19:39
The lockfile entry for @rspack/binding@2.0.8 only listed the
darwin-arm64 binding, so linux CI runners had no matching native
binding and rspack fell back to a hoisted 2.0.0 binary, crashing the
bundle-size benchmark with a core/binding version mismatch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… suspension

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Bundle Size Benchmarks

  • Commit: ef48ff47b351
  • Measured at: 2026-07-14T01:14:41.640Z
  • Baseline source: history:11a6a0d8ba4d
  • Dashboard: bundle-size history
Scenario Current (gzip) Delta vs baseline Initial gzip Raw Brotli Trend
react-router.minimal 87.37 KiB +26 B (+0.03%) 87.24 KiB 273.88 KiB 75.99 KiB ▁▁██████▄▄▄█
react-router.full 91.10 KiB +42 B (+0.05%) 90.96 KiB 285.78 KiB 79.15 KiB ▁▁██████▁▁▁█
solid-router.minimal 43.37 KiB +7.84 KiB (+22.07%) 43.24 KiB 125.92 KiB 39.12 KiB ▁▁▁▁▁▁▁▁▁▁▁█
solid-router.full 48.27 KiB +7.68 KiB (+18.93%) 48.14 KiB 141.02 KiB 43.51 KiB ▁▁▁▁▁▁▁▁▁▁▁█
vue-router.minimal 53.07 KiB +69 B (+0.13%) 52.94 KiB 150.12 KiB 47.70 KiB ▂▂██████▁▁▁█
vue-router.full 59.03 KiB +99 B (+0.16%) 58.90 KiB 168.88 KiB 52.93 KiB ▅▅██████▁▁▁█
react-start.minimal 102.03 KiB +41 B (+0.04%) 101.89 KiB 322.31 KiB 88.32 KiB ▁▄██████▄▄▄█
react-start.deferred-hydration 102.76 KiB +40 B (+0.04%) 101.91 KiB 323.69 KiB 88.91 KiB ▁▄██████▄▄▄█
react-start.full 105.45 KiB +87 B (+0.08%) 105.31 KiB 332.24 KiB 91.23 KiB ▁▄██████▁▁▁█
react-start.rsbuild.minimal 99.74 KiB +64 B (+0.06%) 99.57 KiB 316.74 KiB 85.81 KiB ▁▄██████▃▃▃█
react-start.rsbuild.minimal-iife 100.14 KiB +67 B (+0.07%) 99.98 KiB 317.67 KiB 86.21 KiB ▁▄██████▃▃▃█
react-start.rsbuild.full 102.96 KiB +70 B (+0.07%) 102.79 KiB 326.79 KiB 88.60 KiB ▁▄██████▂▂▂█
solid-start.minimal 65.86 KiB +16.25 KiB (+32.76%) 65.73 KiB 198.05 KiB 58.22 KiB ▁▁▁▁▁▁▁▁▁▁▁█
solid-start.deferred-hydration 69.29 KiB +16.42 KiB (+31.05%) 65.82 KiB 206.50 KiB 61.40 KiB ▁▁▁▁▁▁▁▁▁▁▁█
solid-start.full 69.85 KiB +14.43 KiB (+26.03%) 69.72 KiB 209.68 KiB 61.60 KiB ▁▁▁▁▁▁▁▁▁▁▁█
vue-start.minimal 71.13 KiB +104 B (+0.14%) 71.00 KiB 207.37 KiB 63.03 KiB ▄▇██████▁▁▁█
vue-start.full 75.13 KiB +101 B (+0.13%) 75.00 KiB 220.01 KiB 66.37 KiB ▃▅██████▁▁▁█

Current gzip tracks all emitted client JS chunks. Initial gzip tracks only the entry/import graph. Trend sparkline is historical current gzip ending with this PR measurement; lower is better.

@pkg-pr-new

pkg-pr-new Bot commented Jul 14, 2026

Copy link
Copy Markdown
More templates

@tanstack/arktype-adapter

npm i https://pkg.pr.new/@tanstack/arktype-adapter@7813

@tanstack/eslint-plugin-router

npm i https://pkg.pr.new/@tanstack/eslint-plugin-router@7813

@tanstack/eslint-plugin-start

npm i https://pkg.pr.new/@tanstack/eslint-plugin-start@7813

@tanstack/history

npm i https://pkg.pr.new/@tanstack/history@7813

@tanstack/nitro-v2-vite-plugin

npm i https://pkg.pr.new/@tanstack/nitro-v2-vite-plugin@7813

@tanstack/react-router

npm i https://pkg.pr.new/@tanstack/react-router@7813

@tanstack/react-router-devtools

npm i https://pkg.pr.new/@tanstack/react-router-devtools@7813

@tanstack/react-router-ssr-query

npm i https://pkg.pr.new/@tanstack/react-router-ssr-query@7813

@tanstack/react-start

npm i https://pkg.pr.new/@tanstack/react-start@7813

@tanstack/react-start-client

npm i https://pkg.pr.new/@tanstack/react-start-client@7813

@tanstack/react-start-rsc

npm i https://pkg.pr.new/@tanstack/react-start-rsc@7813

@tanstack/react-start-server

npm i https://pkg.pr.new/@tanstack/react-start-server@7813

@tanstack/router-cli

npm i https://pkg.pr.new/@tanstack/router-cli@7813

@tanstack/router-core

npm i https://pkg.pr.new/@tanstack/router-core@7813

@tanstack/router-devtools

npm i https://pkg.pr.new/@tanstack/router-devtools@7813

@tanstack/router-devtools-core

npm i https://pkg.pr.new/@tanstack/router-devtools-core@7813

@tanstack/router-generator

npm i https://pkg.pr.new/@tanstack/router-generator@7813

@tanstack/router-plugin

npm i https://pkg.pr.new/@tanstack/router-plugin@7813

@tanstack/router-ssr-query-core

npm i https://pkg.pr.new/@tanstack/router-ssr-query-core@7813

@tanstack/router-utils

npm i https://pkg.pr.new/@tanstack/router-utils@7813

@tanstack/router-vite-plugin

npm i https://pkg.pr.new/@tanstack/router-vite-plugin@7813

@tanstack/solid-router

npm i https://pkg.pr.new/@tanstack/solid-router@7813

@tanstack/solid-router-devtools

npm i https://pkg.pr.new/@tanstack/solid-router-devtools@7813

@tanstack/solid-router-ssr-query

npm i https://pkg.pr.new/@tanstack/solid-router-ssr-query@7813

@tanstack/solid-start

npm i https://pkg.pr.new/@tanstack/solid-start@7813

@tanstack/solid-start-client

npm i https://pkg.pr.new/@tanstack/solid-start-client@7813

@tanstack/solid-start-server

npm i https://pkg.pr.new/@tanstack/solid-start-server@7813

@tanstack/start-client-core

npm i https://pkg.pr.new/@tanstack/start-client-core@7813

@tanstack/start-fn-stubs

npm i https://pkg.pr.new/@tanstack/start-fn-stubs@7813

@tanstack/start-plugin-core

npm i https://pkg.pr.new/@tanstack/start-plugin-core@7813

@tanstack/start-server-core

npm i https://pkg.pr.new/@tanstack/start-server-core@7813

@tanstack/start-static-server-functions

npm i https://pkg.pr.new/@tanstack/start-static-server-functions@7813

@tanstack/start-storage-context

npm i https://pkg.pr.new/@tanstack/start-storage-context@7813

@tanstack/valibot-adapter

npm i https://pkg.pr.new/@tanstack/valibot-adapter@7813

@tanstack/virtual-file-routes

npm i https://pkg.pr.new/@tanstack/virtual-file-routes@7813

@tanstack/vue-router

npm i https://pkg.pr.new/@tanstack/vue-router@7813

@tanstack/vue-router-devtools

npm i https://pkg.pr.new/@tanstack/vue-router-devtools@7813

@tanstack/vue-router-ssr-query

npm i https://pkg.pr.new/@tanstack/vue-router-ssr-query@7813

@tanstack/vue-start

npm i https://pkg.pr.new/@tanstack/vue-start@7813

@tanstack/vue-start-client

npm i https://pkg.pr.new/@tanstack/vue-start-client@7813

@tanstack/vue-start-server

npm i https://pkg.pr.new/@tanstack/vue-start-server@7813

@tanstack/zod-adapter

npm i https://pkg.pr.new/@tanstack/zod-adapter@7813

commit: 68cc84b

brenelz and others added 3 commits July 13, 2026 20:10
…art-rscs

The pinned nitro-nightly@4.0.0-20251010 self-imports 'nitro/runtime/meta',
which under pnpm's isolated layout resolves to the hoisted nitro 3.x beta
and crashes vite config loading. Mirrors upstream fix e65f0c8 (#7809).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@nx-cloud nx-cloud Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nx Cloud is proposing a fix for your failed CI:

We fix the multiple entries detected build failure caused by vite-plugin-solid@next.7, which now emits every lazy() target as an explicit Rollup chunk (marked isEntry: true) to guarantee stable SSR manifest entries — even though those chunks are semantically dynamic imports. Our fix pre-collects all chunk filenames that appear in any other chunk's dynamicImports and excludes them from entry detection in normalizeViteClientBuild, mirroring exactly what vite-plugin-solid's own normalizeEmittedLazyEntries already does for the Vite manifest.

Warning

We could not verify this fix.

Suggested Fix changes
diff --git a/packages/start-plugin-core/src/vite/start-manifest-plugin/normalized-client-build.ts b/packages/start-plugin-core/src/vite/start-manifest-plugin/normalized-client-build.ts
index c14609bc..8940f006 100644
--- a/packages/start-plugin-core/src/vite/start-manifest-plugin/normalized-client-build.ts
+++ b/packages/start-plugin-core/src/vite/start-manifest-plugin/normalized-client-build.ts
@@ -45,10 +45,23 @@ export function normalizeViteClientBuild(
   const cssFilesBySourcePath = new Map<string, Array<string>>()
   const cssContentByFileName = new Map<string, string>()
 
+  // Collect all chunk filenames that appear as dynamic imports of any other
+  // chunk. vite-plugin-solid (next.7+) emits every lazy() target as an
+  // explicit Rollup chunk for stable SSR manifest entries, and Rollup marks
+  // those emitted chunks as `isEntry`. Excluding chunks that are reachable via
+  // dynamic imports lets us identify the single true client entry even when
+  // multiple chunks carry `isEntry: true`.
+  const dynamicEntryFileNames = new Set<string>()
+  for (const chunk of chunksByFileName.values()) {
+    for (const dynamicImport of chunk.dynamicImports) {
+      dynamicEntryFileNames.add(dynamicImport)
+    }
+  }
+
   for (const chunk of chunksByFileName.values()) {
     const bundleEntry = clientBundle[chunk.fileName] as Rollup.OutputChunk
 
-    if (chunk.isEntry) {
+    if (chunk.isEntry && !dynamicEntryFileNames.has(chunk.fileName)) {
       if (entryChunkFileName) {
         throw new Error(
           `multiple entries detected: ${entryChunkFileName} ${chunk.fileName}`,

Apply fix via Nx Cloud  Reject fix via Nx Cloud


Or Apply changes locally with:

npx nx-cloud apply-locally YaHb-SuFO

Apply fix locally with your editor ↗   View interactive diff ↗



🎓 Learn more about Self-Healing CI on nx.dev

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants